crypto: harden correctness and backend assurance - #73
Merged
Conversation
Repair cross-cutting defects found by the repository-wide maintenance campaign. - correct AEAD, hash, KDF, RSA, dispatch, and cache behavior - strengthen secret cleanup and constant-time/zeroization evidence - validate RSA private factors and reusable scratch invariants - pin assembly and vector provenance with exact CI enforcement - reconcile documentation, benchmarks, and release-change intent
Give the POWER-specific detection tests a unique module name so the native powerpc64 test build does not collide with the shared detection test module.
Fix the CRC-16 PCLMUL four-way tail boundary, account for x86-64 runtime capability safety gates, and preserve MSRV-compatible CPUID calls without nightly lint failures.
Start the residual PCLMUL tail after all complete four-block groups so inputs with a partial final group are processed exactly once.
Pin cargo-rail 0.20.0 and cargo-rail-action v6.1.0 to their authenticated releases. Validate separate scope and surface outputs through the fail-closed resolver and advance the required nightly.
Exclude the AMX permission test when portable-only suppresses runtime capabilities. Split RSAES-PKCS1-v1_5 Wycheproof coverage into bounded nextest units without dropping vectors or changing timeout policy.
The pinned nightly warns on chunks_exact_to_as_chunks across audited cryptographic loops. Keep their established iterator and remainder semantics instead of mechanically rewriting 74 unrelated sites.
Make feature selection, migration sizing, and portable dispatch behavior actionable for integrators. Narrow benchmark, constant-time, compliance, security, and release wording to the evidence the repository can prove.
Resolve Ubuntu CT dependencies from authenticated repository candidates and bind formal evidence to the exact BINSEC executable. Refresh audited compiler API snapshots and classify the new KMAC and bounded PBKDF2 verification surfaces.
Verify OPAM metadata from an exact clean checkout, parse native POWER and s390x tool output, and keep Apple RSA assembly proof on a physical local Mac. Preserve fail-closed workflow ownership, symbol, and zeroization gates.
Use an independent cSHAKE oracle and enforce the KMAC API contract in both fuzz workspaces. Preserve the original fuzz status after archiving all corpora and crash artifacts.
Keep fixed-owner equality scalar at the declassification boundary so required x86 BINSEC kernels remain provable. Resolve retained GOT-indirect calls and classify only exact public-operand and root closures on AArch64.
Place the new resource errors after the existing entropy variant so its numeric cast remains unchanged.
Record the reviewed API compatibility impact honestly. The pre-1.0 release policy still maps this intent to version 0.8.0.
Welcome to Codecov 🎉Once you merge this PR into your default branch, you're all set! Codecov will compare coverage reports and display results in all future pull requests. ℹ️ You can also turn on project coverage checks and project coverage reporting on Pull Request comment Thanks for integrating Codecov - We've got you covered ☂️ |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
RSA private imports
Private-key imports now require conventional half-modulus-width factors and apply trial division plus a deterministic 32-base Miller–Rabin probable-prime screen through one shared raw-components, PKCS #1, PKCS #8, diagnostic, and fuzz-import path. The screen is deliberately documented as screening rather than a mathematical primality proof and does not add an entropy, dependency, or public policy mechanism.
Validation
just check-allpassed on macOS during the frozen campaign validationjust test --allpassed: 1,691 tests with one intentional skip, plus 218 doctestsalloc,rsa,portable-only: 48/48cargo rail change check --merge-base --requiredpassedjust pushlight gate passed cargo-rail unification, release intent, workflow action pins, and host Rust checksTarget-native RISC-V, IBM Z, POWER, x86-64 RSA assembly, and Sapphire Rapids AMX execution is intentionally assigned to the repository's real CI runners rather than emulated locally.
Release intent
The resulting release intent is major because reviewed changes intentionally tighten public API and accepted-input contracts. Under the pre-1.0 versioning policy, this prepares version 0.8.0.